package kr.or.kosta.otr.service.userservice;

import java.sql.SQLException;
import java.util.ArrayList;
import java.util.HashMap;

import kr.or.kosta.otr.utill.MessageListVO;
import kr.or.kosta.otr.utill.ReportListVO;
import kr.or.kosta.otr.vo.AdminVO;
import kr.or.kosta.otr.vo.CompanyReviewVO;
import kr.or.kosta.otr.vo.CompanyVO;
import kr.or.kosta.otr.vo.MentorVO;
import kr.or.kosta.otr.vo.MessageTypeVO;
import kr.or.kosta.otr.vo.MessageVO;
import kr.or.kosta.otr.vo.ReportVO;
import kr.or.kosta.otr.vo.TrueOrFalseVO;
import kr.or.kosta.otr.vo.UserTypeVO;
import kr.or.kosta.otr.vo.UserVO;

public interface UserService {
	void register(UserVO vo)throws SQLException;
	UserVO userlogin(HashMap<String, String> map)throws SQLException;
	AdminVO adminlogin(HashMap<String, String> map)throws SQLException;
	UserVO findId(String email)throws SQLException;
	UserVO findPassword(String id)throws SQLException;
	AdminVO getAdmin() throws SQLException;
	UserTypeVO getUserType(int userTypeId)throws SQLException;
	boolean isExist(String userId) throws SQLException;
	int getMessageCount(String userId)throws SQLException;
	int getReportCount(String adminId)throws SQLException;
	ArrayList<MessageVO> getAllMessage(String userId)throws SQLException;
	ArrayList<MessageVO> getAllSendMessage(String userId)throws SQLException;
	ArrayList<ReportVO> getAllUserSendMessage(String userId)throws SQLException;
	ArrayList<ReportVO> getAllAdminMessage(String adminId)throws SQLException;
	ArrayList<CompanyReviewVO> getAllCompanyReviewByUserId(String userId) throws SQLException;
	ArrayList<TrueOrFalseVO> getCompanyReviewVerifyByUserId(String userId)throws SQLException;
	float getCompanyScoreTotal(int companyId)throws SQLException;
	void updateTotalScore(int scoreId) throws SQLException; 
	
	void deleteMessage(int messageId) throws SQLException;
	void checkMessage(HashMap<String, Object> map)throws SQLException;
	void checkReport(HashMap<String, Object> map)throws SQLException;
	void deleteReport(int reportId) throws SQLException;
	
	void writeMessage (MessageVO vo)throws SQLException;
	ArrayList<MessageTypeVO> getAllMessageType()throws SQLException;
	MessageTypeVO getMessageType(HashMap<String, Object> map)throws SQLException;
	MessageVO getOneMessage(int messageId)throws SQLException;
	int writeReport(ReportVO vo)throws SQLException;
	void updatePointMinus(HashMap<String, Object> map)throws SQLException;
	
	void deleteUser(String userId)throws SQLException;
	void updateUser(UserVO vo)throws SQLException;
	UserVO getOneUser(HashMap<String, String> map)throws SQLException;
	ArrayList<MentorVO> getAllMentor(HashMap<String, Object> map)throws SQLException;
	CompanyVO getOneCompanyByName(String companyName)throws SQLException;
	
	int myCompanyReviewVerifyByUserId(String userId)throws SQLException;
	int myInterestReview(String userId)throws SQLException;
	int myInterestCompany(String userId)throws SQLException;
	ArrayList<CompanyVO> getCompanyInfo(HashMap<String,Object> map)throws SQLException;
	void deleteCompanyReview(int company_review_id)throws SQLException;
	
	MessageListVO getAllMessagePage(HashMap<String, Object> map)throws SQLException;
	ReportListVO getAllReportPage(HashMap<String, Object> map)throws SQLException;
	void updatePointPlus(HashMap<String, Object> map)throws SQLException;
	ArrayList<TrueOrFalseVO> getCompanyReviewVerifyByUserIdPage(HashMap<String, Object> map)throws SQLException;
	int getCompanyReviewVerifyByUserIdTotal (String userId)throws SQLException;
	int getUserPoint(String userId) throws SQLException;
}
